import { Cache } from './Queue.js';
/**
 *  
 *  固定长度的队列
 *  读取位置自动计算
 */

export var ACache = {
	//类变量和方法
	createNew: function(缓存长度) {
		//定义私有变量
		//定义对象内部方法
		var self = Queue.createNew(缓存长度);
		self.i读取位置 = 0;
		self.add = function(a) {
			self.a缓存.push(a);//插入数据到数组的末尾
			self.i缓存长度++;
			if (self.i缓存长度 > self.i最大缓存) {
				self.i缓存长度 = self.i最大缓存;
				self.a缓存.shift();//超出了就扔掉数组中0下标元素,也就是最早的数据
				if (self.i读取位置 > 0)
					self.i读取位置--;
			}
			//从头插入
		};
		/**
		 * 读一条记录
		 */
		self.read1 = function() {
			let v = self.a缓存[self.i读取位置];
			self.i读取位置++; //下一次的读取位置
			return v;
		};
		/**
		 * 连续读取数据到缓存末尾
		 */
		self.read2end = function() {
			let v = self.a缓存.slice(self.i读取位置)
			self.i读取位置 = self.i缓存长度; //下一次的读取位置
			return v;
		};
		/**
		 * 从 n位置读取到m位置
		 * @param {*} n 
		 * @param {*} m 
		 */
		self.readnstart = function(n, m) {
			n = (n == null || n < 0) ? 0 : n;
			m = (m == null || m > self.i缓存长度) ? self.i缓存长度 : m;
			let v = self.a缓存.slice(n, m)
			self.i读取位置 = m; //下一次的读取位置
			return v;
		};
		return self;
	}
};
